【python自动化办公】Python自动化之pdf 您所在的位置:网站首页 python fitz 增加一页 【python自动化办公】Python自动化之pdf

【python自动化办公】Python自动化之pdf

2024-06-05 15:42| 来源: 网络整理| 查看: 265

目录 前言1. 学习python自动化办公目的2. 未来持续打卡内容3. 资料来源与思维导图 一、PDF处理库1、PyPDF2——基础操作2、pdfplumber——表格抽取3、fitz——图片提取4、pdf2image ——将PDF转为图片 二、PyPDF2操作1、批量拆分2、批量合并3、添加水印4、文档加密与解密加密文档解密文档 5、页面旋转 三、pdfplumber库1、提取文字内容2、提取表格内容 四、fitz库1、提取pdf中的图片 五、pdf2image 库1、将pdf转换为图片

前言 1. 学习python自动化办公目的 学会使用python自动化处理文件,减少重复劳动科学管理文件能够不再使用别的软件合并、分割PDF等 2. 未来持续打卡内容 Task03 Python与word和PDFTask04 简单的Python爬虫Task05 Python操作钉钉自动化Task06 其它推荐软件和网页 3. 资料来源与思维导图

本文不详细介绍函数,简单介绍方法,函数可自行百度,也可看课程GitHub链接:https://github.com/datawhalechina/office-automation。

对pdf文件的处理对大多数人来说是一件很头疼的事:明明应该是简单的合并、分割、提取,很多插件做的花里胡哨还要付费。不过,python中提供了很多处理PDF文件的库,优雅是在优雅!以下简单介绍这些库以及基本的使用,绝对能满足大多数场景的需要!

一、PDF处理库 1、PyPDF2——基础操作

官方文档:https://pypi.org/project/PyPDF2/

PyPDF2是作为PDF工具包构建的python库,它能够:

提取文档信息(标题,作者,…)提取文字按页拆分文档逐页合并文档裁剪页面添加水印文档加密与解密 …… 对PyPDF2类内对象函数的详细介绍可参见,很详细:https://blog.csdn.net/qq_44885233/article/details/113568903 2、pdfplumber——表格抽取

官方文档:https://pypi.org/project/pdfplumber/ pdfplumber是一款用python开发的pdf解析库,pdfplumber不仅可以解析提取pdf文件中的文本,还可以提取表格。

获取PDF中的每个文本字符、矩形和行的详细信息可以进行表格提取和可视化调试 pdfplumber更详细中文教程可见:https://blog.csdn.net/fuhanghang/article/details/122579548 3、fitz——图片提取

官方文档:https://pypi.org/project/fitz/

安装fitz(需要依赖PyMuPDF)

pip install fitz PyMuPDF

跑题介绍一下PyMuPDF: PyMuPDF是MuPDF的Python接口形式,MuPDF 是一个轻量级的 PDF、XPS和电子书查看器、渲染器、工具包。MuPDF有以下优点:

高的性能与运行速度高质量的渲染多种可访问的文件:访问具有“ .pdf”,“ .xps”,“ .oxps”,“ .cbz”,“ .fb2”或“ .epub”之类的扩展名的文件。此外,也可以像文档一样打开和处理大约10种流行的图像格式。 感觉是一个很漂亮的库: https://pymupdf.readthedocs.io/en/latest/intro.html

PyMuPDF的顶级Python导入名称是“ Fitz”。这有历史原因: MUPDF的原始渲染库称为Libart。 “在Artifex Software收购了MUPDF项目之后,开发重点转移到编写新的现代图形库“ Fitz”上。Fitz最初是为了取代老化的Ghostscript图形库的研发项目,而是成为启动MUPDF的渲染引擎。”(引用Wikipedia)。 因此,pymupdf不能与在同一python环境中名为“ fitz”的软件包共存。

4、pdf2image ——将PDF转为图片

官方文档:https://pypi.org/project/pdf2image/

二、PyPDF2操作 1、批量拆分 import os from PyPDF2 import PdfFileWriter, PdfFileReader def split_pdf(filename, filepath, save_dirpath, step=5): """ 拆分PDF为多个小的PDF文件, @param filename:文件名 @param filepath:文件路径 @param save_dirpath:保存小的PDF的文件路径 @param step: 每step间隔的页面生成一个文件,例如step=5,表示0-4页、5-9页...为一个文件 @return: """ if not os.path.exists(save_dirpath): os.mkdir(save_dirpath) pdf_reader = PdfFileReader(filepath) # 读取每一页的数据 pages = pdf_reader.getNumPages() for page in range(0, pages, step): pdf_writer = PdfFileWriter() # 拆分pdf,每 step 页的拆分为一个文件 for index in range(page, page+step): if index = 5: # 先转换CMYK pix = fitz.Pixmap(fitz.csRGB, pix) # 存为PNG pix.writePNG(pic_filepath) filename = '易方达中小盘混合型证券投资基金2020年中期报告.pdf' filepath = os.path.join(os.getcwd(), filename) pic_dirpath = os.path.join(os.getcwd(), '易方达中小盘混合型证券投资基金2020年中期报告【文中图片】') # 提取图片内容 extract_pic_info(filepath, pic_dirpath) 五、pdf2image 库 1、将pdf转换为图片 import os from pdf2image import convert_from_path, convert_from_bytes def convert_to_pic(filepath, pic_dirpath): """ 每一页的PDF转换成图片 @param filepath:pdf文件路径 @param pic_dirpath:图片目录路径 @return: """ print(filepath) if not os.path.exists(pic_dirpath): os.makedirs(pic_dirpath) images = convert_from_bytes(open(filepath, 'rb').read()) # images = convert_from_path(filepath, dpi=200) for image in images: # 保存图片 pic_filepath = os.path.join(pic_dirpath, 'img_'+str(images.index(image))+'.png') image.save(pic_filepath, 'PNG') # PDF转换为图片 convert_to_pic(filepath, pic_dirpath) filename = '易方达中小盘混合型证券投资基金2020年中期报告.pdf' filepath = os.path.join(os.getcwd(), filename) pic_dirpath = os.path.join(os.getcwd(), '易方达中小盘混合型证券投资基金2020年中期报告【转换为图片】') # PDF转换为图片 convert_to_pic(filepath, pic_dirpath)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有